This application relates to the operation of re-programmable nonvolatile memory systems such as semiconductor flash memory systems, and, more specifically, to methods of accessing such systems when multiple commands are received from a host.
Solid-state memory capable of nonvolatile storage of charge, particularly in the foil of EEPROM and flash EEPROM packaged as a small form factor card, has recently become the storage of choice in a variety of mobile and handheld devices, notably information appliances and consumer electronics products. Unlike RAM (random access memory) that is also solid-state memory, flash memory is non-volatile, and retains its stored data even after power is turned off. Also, unlike ROM (read only memory), flash memory is rewritable similar to a disk storage device. In spite of the higher cost, flash memory is increasingly being used in mass storage applications. Conventional mass storage, based on rotating magnetic medium such as hard drives and floppy disks, is unsuitable for the mobile and handheld environment. This is because disk drives tend to be bulky, are prone to mechanical failure and have high latency and high power requirements. These undesirable attributes make disk-based storage impractical in most mobile and portable applications. On the other hand, flash memory, both embedded and in the form of a removable card is ideally suited in the mobile and handheld environment because of its small size, low power consumption, high speed and high reliability features.
Flash EEPROM is similar to EEPROM (electrically erasable and programmable read-only memory) in that it is a non-volatile memory that can be erased and have new data written or “programmed” into their memory cells. Both utilize a floating (unconnected) conductive gate, in a field effect transistor structure, positioned over a channel region in a semiconductor substrate, between source and drain regions. A control gate is then provided over the floating gate. The threshold voltage characteristic of the transistor is controlled by the amount of charge that is retained on the floating gate. That is, for a given level of charge on the floating gate, there is a corresponding voltage (threshold) that must be applied to the control gate before the transistor is turned “on” to permit conduction between its source and drain regions. In particular, flash memory such as Flash EEPROM allows entire blocks of memory cells to be erased at the same time.
In addition to flash memory, other forms of nonvolatile memory may be used in nonvolatile memory systems. For example Ferroelectric RAM (FeRAM, or FRAM) uses a ferroelectric layer to record data bits by applying an electric field that orients the atoms in a particular area with an orientation that indicates whether a “1” or a “0” is stored. Magnetoresistive RAM (MRAM) uses magnetic storage elements to store data bits. Phase-Change memory (PCME, or PRAM) such as Ovonic Unified Memory (OUM) uses phase changes in certain materials to record data bits. Various other nonvolatile memories are also in use or proposed for use in nonvolatile memory systems.
Nonvolatile memory systems, such as flash memory systems are commonly provided in the form of a memory card or flash drive that is removably connected with a variety of hosts such as a personal computer, a camera or the like, but may also be embedded within such host systems. When writing data to the memory, the host typically assigns unique logical addresses to sectors, clusters or other units of data within a continuous virtual address space of the memory system. Like a disk operating system (DOS), the host writes data to, and reads data from, addresses within the logical address space of the memory system. A memory controller is typically provided within the memory system to translate logical addresses received from the host into physical addresses within the memory array, where the data are actually stored, and then keeps track of these address translations. The memory controller may perform a variety of other functions also.
A memory controller is typically formed as an ASIC that is designed to perform the particular functions needed in a particular memory system. These functions may include address translation as described above, ECC, management of multiple memory chips, and communication with a host. Other functions may also be performed in an ASIC that is interposed between the nonvolatile memory and the host interface. In some cases, multiple chips rather than a single ASIC may be used to form a memory controller between the nonvolatile memory and the host interface. The functions performed by the ASIC may be performed by circuits in the ASIC that are dedicated to particular functions, or may be performed by general purpose circuits under the control of firmware that is specific to particular functions.
Typically, communication between a memory system and a host follows a predefined protocol with the host sending commands to the memory controller, and the memory controller causing the commands to be executed in the memory system. Examples of such commands are read and write commands. In some protocols, a host command must be executed and a response sent to the host before a subsequent command is sent. For example, where a host sends a command to read a particular portion of data, that data must be returned to the host before the host sends the next command. Similarly, where the host sends a write command, the data must be written, and some indication sent to the host to tell the host that it is written, before the host sends the next command. Such sequential execution may not utilize memory system resources efficiently and may result in unnecessary latency.